// index.js
// 获取应用实例
const app = getApp()

Page({
  data: {
    src: '',
    imgSrc: '',
    infoArr: [],
    checkedArr: [], // 所有被选择的复选框数组
    inputVal: '', // 输入框值
    list: [{
        id: 0,
        title: '起床',
        check: false
      },
      {
        id: 1,
        title: '刷牙',
        check: false
      },
      {
        id: 2,
        title: '洗脸',
        check: false
      },
    ],
    motto: 'Hello World',
    userInfo: {},
    hasUserInfo: false,
    canIUse: wx.canIUse('button.open-type.getUserInfo'),
    canIUseGetUserProfile: false,
    canIUseOpenData: wx.canIUse('open-data.type.userAvatarUrl') && wx.canIUse('open-data.type.userNickName') // 如需尝试获取用户信息可改为false
  },
  // 绑定输入框变化事件，获取实时的值
  bindKeyInput(e) {
    // console.log('输入内容变化 ：', e.detail.value);
    this.setData({
      inputVal: e.detail.value
    })
  },
  deleteItem() {
    // 如果默认有勾选状态，先从默认数组中删除一遍
    console.log('删除时的状态：', this.data.checkedArr, this.data.list);
    // 去复选框被选择的数组中取对应的下标，改变显示 的数组
    // 声明中间变量数组
    let tmp = [];
    this.data.list.forEach(item => {
      // 遍历原始数组，比对id，如果被勾选数组中不包含元素，就向tmp中push
      if (this.data.checkedArr.indexOf(item.id + '') === -1) {
        tmp.push(item);
      }
    });
    console.log('中间变量数组：', tmp);
    // 为原始数组重新赋值
    this.setData({
      list: [...tmp]
    });
  },
  checkBoxChange(e) {
    // 为新数组在勾选状态变化 时重新赋值
    this.setData({
      checkedArr: [...e.detail.value]
    });
    // console.log('复选框值变化：', this.data.checkedArr);
  },
  // 点击添加按钮时的操作
  add() {
    if (this.data.inputVal === '') {
      wx.showToast({
        title: '输入框不能为空',
        icon: 'error',
        duration: 2000
      })
    } else {
      console.log('输入的值：', this.data.inputVal);
      let newItem = {
        id: this.data.list.length,
        title: this.data.inputVal,
        check: false,
      };
      // 把list在之前基础上重新赋值，
      this.setData({
        list: [...this.data.list, newItem],
        inputVal: ''
      });
      // console.log('新对象：', newItem);

    }
  },
  // 事件处理函数
  bindViewTap() {
    wx.navigateTo({
      url: '../logs/logs'
    })
  },
  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true
      })
    }
  },
  getUserProfile(e) {
    // 推荐使用wx.getUserProfile获取用户信息，开发者每次通过该接口获取用户个人信息均需用户确认，开发者妥善保管用户快速填写的头像昵称，避免重复弹窗
    wx.getUserProfile({
      desc: '展示用户信息', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写
      success: (res) => {
        console.log(res)
        this.setData({
          userInfo: res.userInfo,
          hasUserInfo: true
        })
      }
    })
  },
  getUserInfo(e) {
    // 不推荐使用getUserInfo获取用户信息，预计自2021年4月13日起，getUserInfo将不再弹出弹窗，并直接返回匿名的用户个人信息
    console.log(e)
    this.setData({
      userInfo: e.detail.userInfo,
      hasUserInfo: true
    })
  },
  showDevice() {
    wx.getSystemInfo({
      success: res => {
        this.setData({
          infoArr: [res.brand, res.model, res.version, res.platform]
        });
        console.log('设备品牌：', res.brand);
        console.log('设备型号：', res.model)
        console.log(res.pixelRatio)
        console.log(res.windowWidth)
        console.log(res.windowHeight)
        console.log(res.language)
        console.log(res.version)
        console.log(res.platform)
      }
    })
  },
  call() {
    wx.makePhoneCall({
      phoneNumber: '15517998790' //仅为示例，并非真实的电话号码
    })
  },
  takePhoto() {
    const ctx = wx.createCameraContext()
    ctx.takePhoto({
      quality: 'high',
      success: (res) => {
        console.log(res.tempImagePath);
        this.setData({
          src: res.tempImagePath
        })
      }
    })
    // wx.createCameraContext().takePhoto({
    //   success: res => {
    //     console.log('拍照成功：', res);
    //   },
    //   fail: err => {
    //     console.log('拍照出错：', err);
    //   }
    // });
    // wx.chooseImage({
    //   count: 1,
    //   sizeType: ['original', 'compressed'],
    //   sourceType: ['album', 'camera'],
    //   success: (res) => {
    //     // tempFilePath可以作为img标签的src属性显示图片
    //     const tempFilePaths = res.tempFilePaths;
    //     console.log('照片信息：', tempFilePaths);
    //     this.setData({
    //       imgSrc: tempFilePaths
    //     });
    //   }
    // });
  },
  selfShock() {
    wx.vibrateShort({
      type: 'light'
    });
  },
  toSelf() {
    console.log('搜索值：', this.data.inputVal);
    // 2.本地存储传参，先存，目标页再取
    wx.setStorage({
      key: 'content',
      data: this.data.inputVal,
    });
    // 1.页面跳转传参，适合纯字符串方式的传参
    wx.navigateTo({
      url: `/pages/self/self?content=${this.data.inputVal}&num=666`,
    });
    
  }
})
/**
  1.开放能力：设备信息，震动，打电话，地图
     如果需要传送文件，必须先把文件保存到本地，再读取文件信息，进行编码格式转换再发送，直接发送拍照后的缓存路径是无效的，常用编码base64
  2.页面跳转，
    *新建页面：1新建文件夹，2在文件夹中新建Page
  3.请求：请求地址必须是当前小程序设置过的合法域名才可以
    *上线必须设置正常的服务器接口域名
    *开发阶段，可以设置  不校验合法域名
  4.第3方UI框架
    *使用npm包
    *在小程序目录下，创建package.json，使用npm init -y
    *参照vant官网命令
        *安装vant , 
        *去掉app.json中的style:v2，防止样式影响
        *修改project.config.json
    *项目根目录新建miniprogram文件夹
    *点击 工具 -》 构建npm
    *详情中勾选，使用npm
    *在页面的json文件中使用vant组件，指定确定的路径
      "van-button": "/miniprogram/miniprogram_npm/@vant/weapp/button/index"
  5.版本控制
    *开发者工具，右上角 版本管理
    *初始化仓库，初始化.gitignore文件
    *到码云新建仓库，获取仓库地址
    *版本管理，设置，认证中填上码云的用户名和密码，远程添加仓库的地址
    *正常的开发，提交，推送，拉取，合并流程
    *无法推送时，可以选择  强制推送
 */